#ifndef CONFIG_H_
#define CONFIG_H_

/*
Copyright (C) 2011 Salil Bhagurkar

This file is part of illusion

illusion is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

illusion is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with illusion.  If not, see <http://www.gnu.org/licenses/>.
*/

//
// Kmalloc configuration.
//

//
// Record a stack of kmallocations and kfrees.
//

#define CONFIG_KMALLOC_TRACE_CALLS

//
// When tracing, allow only first in - first out ordering of allocations.
//

#define CONFIG_KMALLOC_TRACE_ORDERING

//
// Include a guard sign on allocations to check for buffer overflows and
// underflows.
//

#define CONFIG_KMALLOC_GUARD_SIGN


//
// Malloc (user-mode configuration). TODO Move this somewhere better?
//

#define CONFIG_MALLOC_GUARD_SIGN
#define CONFIG_MALLOC_TRACE_CALLS
#define CONFIG_MALLOC_TRACE_ORDERING


//
// Throws shit load of messages.
//

#define CONFIG_DEBUG

//
// Shows initialization of various subsystems.
//

#define CONFIG_INITMSG

//
// 'assert' or 'assertv' will result in a fatal error or logging or nothing
// depending on what's defined here.
//

#define CONFIG_ASSERT_FATAL
#define CONFIG_ASSERT_LOG

//
// Run tests at each initialization stage
//

#define CONFIG_RUN_TESTS


#endif /* CONFIG_H_ */
